package m202311.d02;

/**
 * @author haocongshun
 * @date 2023/11/02 18:48:42
 */

import java.util.Arrays;

/**
 * 189. 轮转数组
 */
public class Q189 {

    public static void main(String[] args) {
        int[] ints = new int[]{-1, -100, 1, 2, 3, 99};
        new Q189().rotate(ints, 2);
        System.out.println();
    }

    public void rotate(int[] nums, int k) {
        k = k % nums.length;
        if (k == 0) {
            return;
        }
        int i = 0;
        int count = 0;
        int p = nums.length - k;
        while (true) {
            count++;
            int temp = nums[i];
            nums[i] = nums[p];
            nums[p] = temp;
            i = (i + k) % nums.length;
            if (i == p && count != nums.length) {
                i = (i+1)%nums.length;
                p = (p + 1) % nums.length;
            }
            if(count>=nums.length){
                return;
            }
        }
    }

//    public void rotate(int[] nums, int k) {
//        k = k % nums.length;
//        if(k==0){
//            return;
//        }
//        int[] result = new int[nums.length];
//        int i = nums.length - k;
//        int j = 0;
//        do {
//            result[j] = nums[i];
//            j++;
//            if (i == nums.length - 1) {
//                i = 0;
//            } else {
//                i++;
//            }
//        } while (i != nums.length - k);
//        System.arraycopy(result, 0, nums, 0, result.length);
//    }
}
